package com.bookrecomm.service;

import com.bookrecomm.vo.BookVO;
import com.bookrecomm.vo.PageVO;
import com.bookrecomm.vo.ReadHistoryVO;
import org.springframework.data.domain.Pageable;

/**
 * 阅读历史服务接口
 * 定义阅读历史相关的业务逻辑方法
 */
public interface ReadHistoryService {

    /**
     * 添加或更新阅读历史
     * @param userId 用户ID
     * @param bookId 图书ID
     * @param progress 阅读进度（0-100）
     * @return 是否添加或更新成功
     */
    boolean addOrUpdateReadHistory(Long userId, Long bookId, Integer progress);

    /**
     * 获取用户的阅读历史列表
     * @param userId 用户ID
     * @param pageable 分页参数
     * @return 分页阅读历史列表
     */
    PageVO<ReadHistoryVO> getUserReadHistory(Long userId, Pageable pageable);

    /**
     * 获取用户最近阅读的图书列表
     * @param userId 用户ID
     * @param limit 限制数量
     * @return 最近阅读的图书列表
     */
    PageVO<BookVO> getRecentlyRead(Long userId, int limit);

    /**
     * 获取用户的阅读进度
     * @param userId 用户ID
     * @param bookId 图书ID
     * @return 阅读进度（0-100）
     */
    Integer getReadProgress(Long userId, Long bookId);

    /**
     * 删除阅读历史
     * @param userId 用户ID
     * @param bookId 图书ID
     * @return 是否删除成功
     */
    boolean deleteReadHistory(Long userId, Long bookId);

    /**
     * 清空用户的阅读历史
     * @param userId 用户ID
     * @return 是否清空成功
     */
    boolean clearReadHistory(Long userId);

    /**
     * 获取用户阅读历史数量
     * @param userId 用户ID
     * @return 阅读历史数量
     */
    Long countUserReadHistory(Long userId);
}
